ci: add a texera-web boot smoke test in amber-integration#6319
Conversation
Boot the packaged texera-web (bin/texera-web-application) against amber-integration's infra and assert it reaches a listening state without a runtime classpath/linkage crash -- the check that would have caught apache#6204 (Hadoop 3.4 -> Jersey NoClassDefFoundError) before merge. Mirrors the platform-integration boot checks (apache#6274): the dist is built in-job (self-contained, no artifact hand-off from the amber job) and booted via .github/scripts/smoke-boot.sh. texera-web boots on postgres only (TexeraWebApplication.run -> SqlServer.initConnection; no S3 / LakeFS), which amber-integration already provisions. ubuntu-only, since the boot is pure-JVM and OS-independent. Closes apache#6276.
Automated Reviewer SuggestionsBased on the
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #6319 +/- ##
============================================
- Coverage 61.02% 60.98% -0.04%
+ Complexity 3374 3373 -1
============================================
Files 1140 1140
Lines 44923 44923
Branches 4942 4942
============================================
- Hits 27413 27398 -15
- Misses 16001 16011 +10
- Partials 1509 1514 +5
☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Pull request overview
Adds a CI boot smoke test for the packaged texera-web application as part of the amber-integration workflow, so runtime classpath/linkage failures are caught during CI (even when compilation and unit tests succeed).
Changes:
- Build the Amber distributable (
WorkflowExecutionService/dist) withinamber-integrationon Ubuntu runners. - Unzip the dist and run
.github/scripts/smoke-boot.shagainstbin/texera-web-application, asserting it reaches LISTEN on port 8080.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
| config | throughput | MB/s | latency | max Δ latest / 7d | |
|---|---|---|---|---|---|
| 🔴 | bs=10 sw=10 sl=64 | 417 | 0.255 | 22,286/35,351/35,351 us | 🔴 +9.1% / 🔴 +139.0% |
| ⚪ | bs=100 sw=10 sl=64 | 951 | 0.581 | 101,571/147,034/147,034 us | ⚪ within ±5% / 🔴 +42.5% |
| ⚪ | bs=1000 sw=10 sl=64 | 1,105 | 0.674 | 912,099/941,542/941,542 us | ⚪ within ±5% / 🟢 -7.9% |
Baseline details
Latest main 0e92b16 from same runner
| config | metric | PR | latest main | 7d avg | Δ latest | Δ 7d |
|---|---|---|---|---|---|---|
| bs=10 sw=10 sl=64 | throughput | 417 tuples/sec | 442 tuples/sec | 814.14 tuples/sec | -5.7% | -48.8% |
| bs=10 sw=10 sl=64 | MB/s | 0.255 MB/s | 0.27 MB/s | 0.497 MB/s | -5.6% | -48.7% |
| bs=10 sw=10 sl=64 | p50 | 22,286 us | 21,310 us | 12,120 us | +4.6% | +83.9% |
| bs=10 sw=10 sl=64 | p95 | 35,351 us | 32,413 us | 14,792 us | +9.1% | +139.0% |
| bs=10 sw=10 sl=64 | p99 | 35,351 us | 32,413 us | 18,232 us | +9.1% | +93.9% |
| bs=100 sw=10 sl=64 | throughput | 951 tuples/sec | 941 tuples/sec | 1,050 tuples/sec | +1.1% | -9.4% |
| bs=100 sw=10 sl=64 | MB/s | 0.581 MB/s | 0.574 MB/s | 0.641 MB/s | +1.2% | -9.3% |
| bs=100 sw=10 sl=64 | p50 | 101,571 us | 102,867 us | 96,227 us | -1.3% | +5.6% |
| bs=100 sw=10 sl=64 | p95 | 147,034 us | 151,526 us | 103,174 us | -3.0% | +42.5% |
| bs=100 sw=10 sl=64 | p99 | 147,034 us | 151,526 us | 111,033 us | -3.0% | +32.4% |
| bs=1000 sw=10 sl=64 | throughput | 1,105 tuples/sec | 1,115 tuples/sec | 1,072 tuples/sec | -0.9% | +3.0% |
| bs=1000 sw=10 sl=64 | MB/s | 0.674 MB/s | 0.681 MB/s | 0.655 MB/s | -1.0% | +3.0% |
| bs=1000 sw=10 sl=64 | p50 | 912,099 us | 900,234 us | 950,645 us | +1.3% | -4.1% |
| bs=1000 sw=10 sl=64 | p95 | 941,542 us | 926,958 us | 991,936 us | +1.6% | -5.1% |
| bs=1000 sw=10 sl=64 | p99 | 941,542 us | 926,958 us | 1,022,498 us | +1.6% | -7.9% |
Raw CSV
config_idx,batch_size,schema_width,string_len,num_batches,total_ms,total_tuples,total_bytes,tuples_per_sec,mb_per_sec,lat_p50_us,lat_p95_us,lat_p99_us
0,10,10,64,20,479.58,200,128000,417,0.255,22286.15,35351.13,35351.13
1,100,10,64,20,2102.04,2000,1280000,951,0.581,101570.92,147033.97,147033.97
2,1000,10,64,20,18104.50,20000,12800000,1105,0.674,912098.55,941542.31,941542.31
What changes were proposed in this PR?
Add a boot smoke test for
texera-webto theamber-integrationjob: build the amber dist in-job and launch the packagedbin/texera-web-applicationvia.github/scripts/smoke-boot.sh(from #6220), asserting it reaches a listening state (port 8080) without a runtime classpath/linkage crash.texera-webwas left out of #6274'splatform-integrationchecks because it's built in theamberjob, notplatform; its boot check belongs in the infra-provisionedamber-integrationjob (mirroring howplatform-integrationhosts the platform boot checks).sbt WorkflowExecutionService/dist), not shipped as an artifact — soamber-integrationstays independent ofamberand runs in parallel (theplatform-integration∥platformshape from ci: add platform-integration job to boot each service against real infra #6274). The compile is already warm from the integration-test run.texera-webboots viaTexeraWebApplication.run→SqlServer.initConnection(+createAdminUser); no S3 / LakeFS at boot, soamber-integration's postgres suffices. Config resolves throughUtils.amberHomePath(a working-dir search for a dir namedamber), finding./amberfrom the checkout root and readingamber/src/main/resources/web-config.yml.Concrete regression it catches: #6204 (Hadoop 3.4 → Jersey
NoClassDefFoundError) — compiled and unit-tested clean but crashedtexera-webon boot.Any related issues, documentation, discussions?
Closes #6276. Boot script from #6220; mirrors the
platform-integrationboot checks in #6274.How was this PR tested?
texera-web's boot path touches postgres only (SqlServer.initConnection+AuthResource.createAdminUser; no S3 / LakeFS / MinIO anywhere in the class).FileAssetsBundle("../../frontend/dist", …)registers lazily (itsrun()only constructs + registers the servlet; the filesystem check is request-time), so the absent frontend build in CI doesn't block boot.bin/texera-web-application, per the prod imageCMD) and port (8080, perweb-config.yml).amber-integrationCI run (ubuntu leg).Was this PR authored or co-authored using generative AI tooling?
Generated-by: Claude Code (claude-opus-4-8)